<!DOCTYPE html>
<html lang="zh-cn">
    <head>
        <meta charset="UTF-8"/>
        <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
        <title>兼容各种环境的全局变量</title>
    </head>
    <body>
      <h1>ES6入门标准</h1>
      <p>来源:<a href="http://es6.ruanyifeng.com/#docs/let">http://es6.ruanyifeng.com/#docs/let</a></p>
        <script>
            // 方法一
            (typeof window !== 'undefined'
               ? window
               : (typeof process === 'object' &&
                  typeof require === 'function' &&
                  typeof global === 'object')
                 ? global
                 : this);

            // 方法二
            var getGlobal = function () {
              if (typeof self !== 'undefined') { return self; }
              if (typeof window !== 'undefined') { return window; }
              if (typeof global !== 'undefined') { return global; }
              throw new Error('unable to locate global object');
            };
            // CommonJS 的写法
            require('system.global/shim')();

            // ES6 模块的写法
            import shim from 'system.global/shim'; shim();
            // 上面代码可以保证各种环境里面，global对象都是存在的。
            // CommonJS 的写法
            var global = require('system.global')();

            // ES6 模块的写法
            import getGlobal from 'system.global';
            const global = getGlobal();
            // 上面代码将顶层对象放入变量global。
        </script>
    </body>
</html>